#ifndef EthCreateSignTransactionParams_hpp
#define EthCreateSignTransactionParams_hpp

#include "../common/CreateSignTransactionParams.hpp"
#include "../common/BtSeed.hpp"
#include "libdevcrypto/Common.h"

#include <vector>
using namespace std;
using namespace dev;

class EthCreateSignTransactionParams : public CreateSignTransactionParams
{
public:
    EthCreateSignTransactionParams() {};
    EthCreateSignTransactionParams(BtSeed btSeed, string password, string from, string to, u256 gasLimit,
                                   u256 gasPrice, u256 value, string data, u256 nonce);

    EthCreateSignTransactionParams(string password, string from, string to, u256 gasLimit,
                                   u256 gasPrice, u256 value, string data, u256 nonce, string priKey);
    BtSeed getBtSeed();
    string getFrom();
    string getTo();
    u256 getValue();
    u256 getGasLimit();
    u256 getGasPrice();
    vector<uint8_t> getData();
    u256 getNonce();
    string getPassword();
    string getPriKey();

    void setBtSeed(BtSeed btSeed);
    void setFrom(string fromAddress);
    void setTo(string toAddress);
    void setValue(u256 sendValue);
    void setGasLimit(u256 gasLimit);
    void setGasPrice(u256 gasPrice);
    void setData(vector<uint8_t> data);
    void setNonce(u256 nonce);
    void setPassword(string password);
    void setPriKey(string priKey);

private:
    BtSeed btSeed;
    string password;
    string from;
    string to;
    u256 gasLimit;
    u256 gasPrice;
    u256 value;
    vector<uint8_t> data;
    u256 nonce;
    string priKey;
};

#endif